#import <Foundation/Foundation.h>
#import <MapKit/MapKit.h>
#import "PersistentDataType.h"
#import "SFUConstants.h"

/**
 * Encapsulates annotation information for the MKMapView. 
 * 
 * Stores the annotation title, subtitle and coordinate
 * @author      William LaFrance (used with permission: http://wjlafrance.net/?p=7)
 * @author      James Lin
 * @version     1.4.3
 * @since       0.2.0
 */
@interface AddressAnnotation : NSObject <MKAnnotation, PersistentDataType> {
	CLLocationCoordinate2D annCoordinate; // Coordinate of the annotation
	NSString*              annTitle;      // Title of the annotation
	NSString*              annSubtitle;   // Subtitle of the annotation
}

@property AnnotationType annType;

+ (AddressAnnotation*)mapAnnotationWithCoordinate:(CLLocationCoordinate2D)coordinate;
+ (AddressAnnotation*)mapAnnotationWithCoordinate:(CLLocationCoordinate2D)coordinate 
										 andTitle:(NSString*)title;
+ (AddressAnnotation*)mapAnnotationWithCoordinate:(CLLocationCoordinate2D)coordinate 
										 andTitle:(NSString*)title 
									  andSubtitle:(NSString*)subtitle;
+ (AddressAnnotation*)mapAnnotationWithCoordinate:(CLLocationCoordinate2D)coordinate 
										 andTitle:(NSString*)title 
									  andSubtitle:(NSString*)subtitle 
										  andType:(AnnotationType)type;

- (id)initWithCoordinate:(CLLocationCoordinate2D)coordinate;
- (id)initWithCoordinate:(CLLocationCoordinate2D)coordinate
				andTitle:(NSString*)title;
- (id)initWithCoordinate:(CLLocationCoordinate2D)coordinate 
				andTitle:(NSString*)title 
			 andSubtitle:(NSString*)subtitle;
- (id)initWithCoordinate:(CLLocationCoordinate2D)coordinate 
				andTitle:(NSString*)title 
			 andSubtitle:(NSString*)subtitle 
				 andType:(AnnotationType)type;
- (id)initWithType:(AnnotationType)type;
- (NSString *)title;
- (NSString *)subtitle;

// Additional setter methods
- (void)setTitle:(NSString*)title;
- (void)setSubtitle:(NSString*)subtitle;
- (void)setCoordinate:(CLLocationCoordinate2D)coordinate;

@end